home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / mtd / partitions.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  2.6 KB  |  80 lines

  1. /*
  2.  * MTD partitioning layer definitions
  3.  *
  4.  * (C) 2000 Nicolas Pitre <nico@cam.org>
  5.  *
  6.  * This code is GPL
  7.  */
  8.  
  9. #ifndef MTD_PARTITIONS_H
  10. #define MTD_PARTITIONS_H
  11.  
  12. #include <linux/types.h>
  13.  
  14.  
  15. /*
  16.  * Partition definition structure:
  17.  *
  18.  * An array of struct partition is passed along with a MTD object to
  19.  * add_mtd_partitions() to create them.
  20.  *
  21.  * For each partition, these fields are available:
  22.  * name: string that will be used to label the partition's MTD device.
  23.  * size: the partition size; if defined as MTDPART_SIZ_FULL, the partition
  24.  *     will extend to the end of the master MTD device.
  25.  * offset: absolute starting position within the master MTD device; if
  26.  *     defined as MTDPART_OFS_APPEND, the partition will start where the
  27.  *     previous one ended; if MTDPART_OFS_NXTBLK, at the next erase block.
  28.  * mask_flags: contains flags that have to be masked (removed) from the
  29.  *     master MTD flag set for the corresponding MTD partition.
  30.  *     For example, to force a read-only partition, simply adding
  31.  *     MTD_WRITEABLE to the mask_flags will do the trick.
  32.  *
  33.  * Note: writeable partitions require their size and offset be
  34.  * erasesize aligned (e.g. use MTDPART_OFS_NEXTBLK).
  35.  */
  36.  
  37. struct mtd_partition {
  38.     char *name;            /* identifier string */
  39.     u_int32_t size;            /* partition size */
  40.     u_int32_t offset;        /* offset within the master MTD space */
  41.     u_int32_t mask_flags;        /* master MTD flags to mask out for this partition */
  42.     struct nand_ecclayout *ecclayout;    /* out of band layout for this partition (NAND only)*/
  43.     struct mtd_info **mtdp;        /* pointer to store the MTD object */
  44. };
  45.  
  46. #define MTDPART_OFS_NXTBLK    (-2)
  47. #define MTDPART_OFS_APPEND    (-1)
  48. #define MTDPART_SIZ_FULL    (0)
  49.  
  50.  
  51. int add_mtd_partitions(struct mtd_info *, const struct mtd_partition *, int);
  52. int del_mtd_partitions(struct mtd_info *);
  53.  
  54. /*
  55.  * Functions dealing with the various ways of partitioning the space
  56.  */
  57.  
  58. struct mtd_part_parser {
  59.     struct list_head list;
  60.     struct module *owner;
  61.     const char *name;
  62.     int (*parse_fn)(struct mtd_info *, struct mtd_partition **, unsigned long);
  63. };
  64.  
  65. extern int register_mtd_parser(struct mtd_part_parser *parser);
  66. extern int deregister_mtd_parser(struct mtd_part_parser *parser);
  67. extern int parse_mtd_partitions(struct mtd_info *master, const char **types,
  68.                 struct mtd_partition **pparts, unsigned long origin);
  69.  
  70. #define put_partition_parser(p) do { module_put((p)->owner); } while(0)
  71.  
  72. struct device;
  73. struct device_node;
  74.  
  75. int __devinit of_mtd_parse_partitions(struct device *dev,
  76.                                       struct device_node *node,
  77.                                       struct mtd_partition **pparts);
  78.  
  79. #endif
  80.